# 1. 导入socket
import socket

# 创建socket套接字，用于与服务器进行数据传输
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定服务器的ip和端口
tcp_client_socket.bind(("192.168.124.4", 8080))

# 使用listen将创建的套接字对象由主动模式转换为被动模式
tcp_client_socket.listen(128)
print("---------------------等待客户端接入")

while True:  
    # 等待客户端接入，阻塞
    (client_socket, tcp_client_addr) = tcp_client_socket.accept()
    print(f"客户端 {tcp_client_addr} 已接入")
        
    while True:
        # 服务器接收客户端的数据，阻塞，直到客户端发送数据后，阻塞消失
        tcp_server_data = client_socket.recv(2048)
        if tcp_server_data:
            print("收来自客户端的数据:", tcp_server_data.decode(encoding="utf-8"))
            client_socket.send("已收到消息".encode(encoding="utf-8"))
        else:
            # 服务器接收到空字节数组时，退出循环
            print("客服端退出")
            # 关闭关闭服务器创建的套接字
            client_socket.close()
            flag = 1
            break

# 关闭服务器套接字，没有接入服务器的客户端无法接入，已接入服务器的客户端仍能够正常收发数据
tcp_client_socket.close()

# 当前一次只能处理一个客户端收发消息，第二客户端已进入，等待第一个客户端退出，第二个客户端自动接入